Time shifting by simultaneously recording and playing a data stream

ABSTRACT

A video stream may include portions that are stored while other portions are being displayed. In one embodiment, a portion of the video stream may be stored in digital storage media at one instance while in the next instance another portion of the stream is being read out of the storage media.

CROSS-REFERENCE TO RELATED APPLICATION

This is a continuation-in-part of U.S. patent application Ser. No.08/996,535, filed Dec. 23, 1997.

BACKGROUND

This present invention relates to the recording and playing back of avideo stream. A video stream includes any combination of audio and/orvideo data streams.

Video streams have typically been recorded on analog media such as avideo cassette. A video cassette recorder (VCR) is used to record thevideo stream on the video cassette. The video stream may come via abroadcast signal, via cable, via satellite signal, or from another videoplayback device. Once the video stream has been recorded, the VCR isused to rewind the recording medium and play what was recorded. However,due to the nature of the analog medium, once the VCR has startedrecording, it is not possible to play back the portion of the videostream that has already been recorded until the recording session isterminated.

For example, imagine that a person sets up a VCR for recording a onehour show because he knows that he will miss the first 15 minutes of theshow. When he arrives home 15 minutes into the show, he will have towait for the entire show to be recorded before he can start watching theprogram from the beginning. A way of being able to view the show fromthe beginning without having to wait for the recording session toterminate is desirable.

SUMMARY

A method of enabling a video stream to be stored and displayed at thesame time including allowing portions of the video stream to bealternately written to and read from a storage device. The next portionto be written to the storage device is stored in a temporary bufferwhile another portion is being read from said storage device.

DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a block diagram of a video record and playback system inaccordance with one embodiment of the invention;

FIG. 2 shows a flow chart of the method of providing a time-shiftedvideo stream;

FIG. 3 shows one embodiment of performing block 206 of FIG. 2;

FIG. 4 shows one embodiment of an apparatus for storing the video streamon a hard disk;

FIG. 5 shows an exemplary method of using the storage unit as atemporary buffer.

FIG. 6 shows a flowchart of the playback of a video stream catching upto the incoming video stream;

FIG. 7 shows another embodiment, in which the user is able to suspendthe display of the incoming video stream;

FIG. 8 shows an example of a display screen with several image framestaken at different times;

FIG. 9 is a flow chart showing one system for recording and playing backa video stream;

FIG. 10 is a block diagram of a computer system useful in implementingone embodiment of the present invention;

FIG. 11 is an exemplary TV display for implementing an embodiment of thepresent invention;

FIG. 12 is a flow chart showing the operation of another embodiment ofthe present invention;

FIG. 12A is a continuation of the flow chart of FIG. 12.

FIG. 13 is a top plan view of a remote control useful in one embodimentof the present invention;

FIG. 14 is a block diagram showing how data is transferred to and from amemory device;

FIG. 15 is a flow chart showing the flow of input video information intoa storage device;

FIG. 16 is a flow chart showing the flow of data from the storagedevice; and

FIG. 17 shows a display with an electronic program guide.

DETAILED DESCRIPTION

FIG. 1 shows a block diagram of a video record and playback system 100in accordance with one embodiment of the invention. A video stream isreceived at the video input 102. The video stream may be provided by acamera, a television signal, broadcast, cable, or satellite signals, oranother video playback device. In one embodiment, the video input 102performs an analog-to-digital conversion on an analog video stream toform a digital video bit stream. In a different embodiment, the video isalready in digital form. The video record and playback system 100 may bepart of a computer system such that the video input 102 is a videocapture card in the computer system.

The digital video stream from the video input 102 is optionallycompressed at compression unit 104. In one embodiment, the video isalready compressed, such as would be the case with an Moving PictureExperts Group 2 (MPEG 2) specification (available from the InternationalStandards Organization Standard IS01172) compliant video signal, and nofurther compression is needed. The video stream is then stored in thestorage unit 108. A buffer unit 106 may be used as temporary storage forproviding larger sequential blocks of video data to the storage unit108. In one embodiment, the storage unit 108 is a random access memorythat allows relatively quick access to any portion of the stored videostream. A hard disk is an example of a random access memory.

The video stream is played back by reading the video stream from thestorage unit 108. If the video stream was compressed in compression unit104, then a decompression unit 110 decompresses the retrieved videostream. The video stream is provided from a video output port 120, to amonitor or other display device to provide sound and/or video to a user.

A removable storage unit 122 may also be included in video record andplayback system 100, Examples of removable storage units are a writeablecompact disk read only memory (CD-ROM), writeable digital video disk(DVD), a flash memory, or another hard disk. The removable storage unit122 allows a user to transfer a recording of a video stream stored instorage unit 108 to the removable storage unit 122 and then to transferthe unit 122 to another system at a different location.

In one embodiment, a processor 130 controls the operations of the videorecord and playback system 100. The compression unit 104 anddecompression unit 110 may be implemented in hardware, or thecompression and decompression functions of units 104 and 110 may beperformed by the processor 130. Processor 130 receives instructions fromfirmware/memory 140, using technology that is well known.

FIG. 2 shows a flow chart of the method of providing a time-shiftedvideo stream. The flow chart begins at block 200, and continues at block202 where the video stream is received. The recording of the videostream begins at block 204. At block 206, playback of the recorded videostream is performed by retrieving a portion of the video stream from therandom access storage unit while the recording of the incoming videostream continues. The retrieved portion of the video stream may betime-shifted from the incoming video stream by a time delay. At block208, the portion of the video stream retrieved from the random accessstorage unit is retrieved for display by a television or other displaydevice.

In this way, the record and playback functions are decoupled from oneanother. The user may now begin watching a recorded TV show from thebeginning, i.e., prior to the show being completely recorded.

FIG. 3 shows one method for retrieving a portion of the video streamfrom the random access storage unit while continuing to record theincoming video stream. In the disclosed embodiment, the simultaneousrecording and playback of the video stream is performed by multiplexingor alternately storing the video stream to the random access storageunit and reading of the video stream from the random access storageunit. The multiplexed or alternated stores and reads may occur quicklyenough that the user does not notice an appreciable delay in theplayback of the video stream, and the incoming video stream is not lost,i.e., all of the video stream is recorded. Thus, the record and playbackare simultaneous from the user's point of view.

In one embodiment, the random access storage unit is a hard disk. Theretrieval of the time-shifted video signal from the hard disk isperformed at a first physical location (or sector) of the hard disk, andthe storing to the hard disk of the incoming video stream is performedat a different physical location (or sector) on the hard disk. Becauseit takes more time to jump back and forth between different sectors ofthe hard disk than to read and write to sequential locations in the samesector, data may be buffered to minimize the number of accesses to andfrom the hard disk using buffer 106. This increases the amount of datatransferred per access.

Additionally, because of time constraints for reading and writing to thehard disk, data may be compressed and decompressed to speed transfers toand from the hard disk.

In block 302, the video stream is stored in a random access storageunit. The video stream is optionally compressed and/or buffered prior tostorage. In block 304, the video stream is retrieved from the randomaccess storage unit. Buffering and/or decompression may be performedbefore providing the retrieved video stream to the video output port120.

The next portion of the video stream is stored (block 306) as describedin block 302. At block 308, the next portion of the video stream isretrieved as described in block 304. This process is repeated untileither the recording or playback cycle is terminated.

FIG. 4 shows one embodiment of an apparatus for storing the video streamin the storage unit 108. In this embodiment, the video stream is storedas separate files 001 and 009 on a hard disk, for example. The processor130 keeps track of the file and offset into the file of the data beingplayed back, as well as the file and offset into the file of the databeing recorded. If the random access storage unit is fast enough, morethan one video stream can be recorded and played back at the same time.

Due to the nature of the random access storage unit being capable ofeasily recording over itself, the random access storage unit may act asa temporary buffer for recording the latest portion, or X number ofminutes, of an incoming video stream, where X is set up based upon thesize of the storage unit. In one embodiment, X could be set up to be theentire storage unit. As newer portions of the video stream are received,they overwrite the older portions of the video stream saved in therandom access storage unit. In this manner, the temporary buffering ofthe video stream acts as a circular buffer. In one embodiment, theprocessor 130 maintains pointers to the beginning and ending points ofthe temporary buffer. The processor 130 reassigns the pointers as newerportions of the video stream are received and/or older portions of thevideo stream are overwritten.

FIG. 5 shows a flow chart 500 of one method for using the storage unitas a temporary buffer. At block 502, the video stream is received at aninput. Recording of the video stream to the storage unit begins at block504. At block 506, older portions of the video stream are deleted asnewer portions of the video stream are stored to the storage unit.

A user may initiate a playback cycle following block 506. For example,this may occur when the user wishes to re-view a video clip that he justsaw. In one embodiment, the user stops recording to the temporary bufferand plays back the last portion of the temporary buffer.

However, it may be more desirable to the user to be able to continuerecording as shown at block 508. A record and playback cycle (asdescribed with respect to FIG. 2) is started, in which the incomingvideo stream is recorded while the user re-views the last portion of thetemporary buffer. In this manner, after re-viewing the desired videoclip, the user can resume sequentially watching the video stream fromthe point of the video clip.

At block 510, after the record and playback cycle is completed, all orpart of the temporary buffer may be saved. Since the temporary bufferstores the latest X minutes of the video stream prior to the record andplayback cycle, all or part of the temporary buffer may be allocated tothe portion of the video stream saved during the record and playbackcycle. Other portions of the video stream may then be deleted from thestorage unit, or they may be marked as overwriteable and used as a newtemporary buffer.

FIG. 6 illustrates a method for playing back a video stream to allow theplayback to catch up to the incoming video stream. Usually, duringsimultaneous playback and recording of the same video stream, theplayback of the video stream is time-shifted from the incoming videostream by a time delay. However, if the playback is performed at anoverall rate faster than the rate at which the incoming video stream isreceived, then the playback will catch up to the incoming video stream.

For example, playback of the video stream may have an overall ratefaster than the rate of the incoming video stream if the playback isfast forwarded, or if segments of the playback are skipped altogether.When the time delay of the time-shifted video stream being played backfalls below a certain threshold, the video and playback system 100 willcease providing the time-shifted video stream from the storage unit.Instead, the incoming video stream will be provided to the video outputport 120 directly. In one embodiment, a bypass 142, as shown in FIG. 1,allows the incoming video stream to be provided to the video output port120 directly.

When this happens, the user has caught up to the “live” broadcast, i.e.,the incoming video stream. The user may terminate the recording cycle,if he wishes. Alternatively, the user can put the video record andplayback system 100 back into the temporary buffering mode in which onlythe latest portion of the video stream is stored.

FIG. 7 shows an embodiment in which the user is able to suspend thedisplay of the incoming video stream. This can be used for example, whenthe user is interrupted, and wishes to continue viewing the video streamafter the interruption. When interrupted, the user signals to the videostream and playback system 100 to suspend the display of incoming videostream. This can be done via a remote control, for example. At block702, the video output is suspended. In one embodiment, the video outputcontinues to provide a still image of the image present at the instancewhen the suspend was encountered.

At block 704 the incoming video stream is recorded but is not displayedto the monitor. Instead the playback is paused at the point at which theuser indicated that the incoming video stream be suspended. When theuser is ready to view the video stream again, he can signal the videorecord and playback system 100 to un-suspend the video stream so that itplays back from the point at which the video stream was suspended, asshown in block 706.

The user may then view the video stream time shifted by the amount oftime that he suspended the incoming video stream, or he may fast forward(or rewind) through the time-shifted video stream. When playback of thetime-shifted video stream catches up to the point at which the incomingvideo stream is being recorded, the record and playback system 100 maydisplay the incoming video stream directly from incoming video streamwithout retrieving the video stream from the storage unit, as describedwith respect to FIG. 6. The recording of the video stream may then beterminated by the user, if desired.

Employing a random access storage unit for storage of the video streamfacilitates jumping to various points within the video stream. One wayof jumping is by retrieving different time slices of the video stream.For example, an image frame from the video stream can be retrieved fromthe storage unit at 1 minute intervals from a current position of thevideo stream. In one embodiment, an image frame at the current playbackposition+1 minute, current playback position+2 minutes, and so forth areretrieved and displayed on the TV screen.

FIG. 8 shows an example of a display screen 800 which displays severalimage frames taken from the video stream at different times. In FIG. 8,the current playback position is designated as X. In one embodiment, thetime interval, T, is user programmable. The intervals may be multiplesof the time interval, as shown. A small interval may be used if the userwishes to skip a commercial, which usually lasts only a few minutes.Longer intervals such as a half hour may be useful for determining whichmovies are recorded on a storage unit.

After the image frames are displayed, the user is able to select one ofthe frames as a new starting point to which to begin an operation, suchas a playback or record operation. By using such a story boardingmethod, it is easy for a user to quickly jump to a desired locationwithin the video stream.

In one embodiment, the record and playback system 100 is able to detecta black screen or fade out, such as those which accompany the beginningor end of a commercial. This is useful in editing a video stream.

Having the video stream stored on a random access storage unit such as ahard disk allows for easy editing of the video stream. Individual framesof the video stream may be deleted or replaced. For example, acommercial may be replaced by a fade-to-black sequence.

Once the video stream on the storage unit has been edited, it can bestored to a more permanent medium such as a writeable CD-ROM, flashmemory, or another hard disk via the removable storage unit 122.

Referring now to the embodiment shown in FIG. 9, a flow 900 fordigitally recording a video stream begins by capturing the video streamas indicated in block 902. If the stream is an analog stream, it may bedigitized in an analog-to-digital conversion process as indicated atblock 904. Next the digital stream may be encoded and compressed, forexample using the MPEG2 compression scheme, as indicated in block 906.The stream is alternately read, as indicated at block 910, and stored,as indicated in block 908, in a conventional storage device such as ahard disk drive, a digital video disk or a flash memory. Data that isread from the storage device is decoded and decompressed usingconventional technology, as indicated in block 912, for display asindicated in block 914.

A computer system 1000 in accordance with one embodiment of the presentinvention, shown in FIG. 10, includes a processor 1002. In oneembodiment, the processor may be coupled to an accelerated graphics port(AGP) chipset 1004 for implementing an accelerated graphics portembodiment. The chipset 1004 communicates with the AGP port 1005 and thegraphics accelerator 1006. The television 1010 may be coupled to thevideo output of the graphics accelerator 1006. The chipset 1004accommodates the system memory 1008. The chipset 1004 is also coupled toa bus 1012 which may be, for example, a peripheral componentinterconnect (PCI) bus. The bus 1012 connects to TV tuner/capture card1014 which is coupled to an antenna 1015 or other video input, such as acable input, a satellite receiver/antenna or the like. The TV tuner andcapture card 1014 selects of a desired television channel and alsoperforms the video capture function (block 902, FIG. 9). One exemplaryvideo capture card is the ISVR-III video capture card available fromIntel Corporation.

The bus 1012 is also coupled to a bridge 1016 which couples a hard diskdrive 1018. The software 1020, 1022, 1024, 1026, 1028, and 1030 may bestored on the hard disk 1018. The bridge 1016 is also coupled to anotherbus 1032. The bus 1032 may be coupled to a serial input/output (SIO)device 1034. The device 1034 is in turn coupled to conventionalcomponents such as a mouse 1036, a keyboard 1038, and an infraredinterface 1040. Also connected to the bus 1032 is a basic input/outputsystem (BIOS) 1042.

An exemplary display 1100, shown in FIG. 11, for the television 1010 maydisplay a conventional television picture or program 1101 and, inaddition, may have superimposed over the screen, in a discrete fashion,a mouse selectable series of icons, such as the icons 1102 through 1114.When the mouse cursor 1116 selects the appropriate one of the icons, acorresponding feature may be implemented. Among the features that may beimplemented in this fashion include a pause or stop function 1102, astart record function 1104, a fast forward function 1106, a rewindfunction 1108, and a 10 second reply function 1110 which winds back 10seconds and replays, and a catchup function 1112 that begins playingback recorded content at a faster than normal rate until the displaycatches up with a live broadcast and an electronic program guide 1114.

Referring next to FIG. 12, a program 1020 called display is used tocontrol various features implemented by the computer 1000. Initially acheck is made at diamond 1200 to determine if an electronic programmingguide (EPG) is implemented. An electronic programming guide is anelectronic depiction of the various programs that are available atdifferent times. The electronic programming guide can be provided on adisk, over a modem, by an Internet connection and using an interactivebroadcasting transmission such as Intercast® 2.0 interactivebroadcasting software available from Intel Corporation.

If a particular television program is selected (even if the program isonly selected for viewing) on the EPG, an identifier for that particularprogram is stored, as indicated at block 1202, and automatic recordingof the program begins (block 1204). In this way the stored version ofthe program is available to implement the various features describedherein even if the storage function was not particularly requested.Because the information is stored in an overwriting fashion, no harm isdone by recording the information even if the information turns out notto be useful.

Referring to FIG. 17, an electronic program guide user interface 1700may be deployed on the television 1010. When the user mouse clicks a boximage 1702, representing a given television program, using the cursor1116, that program is automatically recorded.

Continuing in FIG. 12, an inquiry (diamond 1206) checks whether the userhas selected the zoom feature for playback. If the user presses a zoombutton during playback, a zoom feature is implemented. In oneembodiment, five predefined quadrants in the television display may bedefined including four quadrants located peripherally around a centralquadrant. When the user selects the zoom feature the user indicates theappropriate quadrant for the zoom (block 1208). The selected quadrant isscaled (block 12.10) to produce a larger (zoom) picture.

Referring to block 1208, the pointer focus is identified to determinewhich quadrant will be zoomed. That quadrant is then scaled as indicatedat block 1210. Because the television program is continually beingstored, the scaling can be implemented without any loss of continuity ofthe television picture. After the user has completed looking at thezoomed depiction, the user can return to the program at the point wherehe or she departed to view the zoomed depiction. Thereafter thedisplayed depiction viewed by the user may be time delayed from theactually broadcast program. However the user is able to view the programin its entirety even if slightly time delayed.

Next a query is made at diamond 1212 to determine whether a pausefunction has been selected. If so, the playback is stopped as indicatedat block 1214 but recording continues unabated as shown in block 1216.

The next check determines whether the play feature has been selected(block 1218). If so the recorded content is played thereby terminatingthe live display. However, while the recorded content is displayed,recording continues as indicated in block 1222 so that the recordedcontent may be eventually displayed without disrupting the continuity ofthe program.

A query finds out if the fast forward feature has been implemented asindicated in diamond 1224. If so, a fast playback is implemented asshown in block 1226. Once the playback equals the current broadcast orprogram content (diamond 1228), the flow returns to display currentbroadcast or program content. The fast forward may progress at 300 to400% of normal playback speed.

Moving on to FIG. 12A, at diamond 1230 a check is done to see if the 10second replay feature has been activated. If so, the storage device isoperated to find the content which was recorded 10 seconds ago (block1232). The recorded content is then played (block 1234) from the 10second period back to present. This would correspond to the replayfeature implemented with broadcast television sporting events. After the“rewind” and playback of 10 seconds has been completed, the system isautomatically transferred to automatic play and the recorded contentthat was displayed during the replay is displayed so the user does notlose any continuity in the show. Of course, the user can set the amountof time for the replay to be something other than 10 seconds.

A catchup feature is checked (diamond 1230) and, if this feature hasbeen selected, an accelerated playback option is implemented (asindicated in block 1238). In the accelerated playback, the playback maybe slightly increased in speed, for example from 105 to 115% of actualspeed, so the user can easily follow the program but can make up forlost time to get back into the program as broadcast. Once the recordedprogram catches up to the real-time program as indicated in diamond1240, the catchup feature is completed and the user returns to real-timedisplay.

Control over the record and playback functions may be implementedthrough a normal mouse function, for example by clicking on icons asindicated in FIG. 11. In addition, the record and playback features maybe controlled remotely even when the user is not proximate to a keyboardor mouse. This may be done using a conventional remote control operatorwhich may, for example, utilize infrared radiation.

As indicated in the depiction of an exemplary computer system 1000 (FIG.10), an infrared adapter 1040 may be provided, for example in compliancewith the standards and specifications (such as Infrared Data AssociationSerial Infrared Link Access Protocol Version 1.0, Jun. 23, 1994) of theInfrared Data Association (which can be found at {www.irda.org}). Theremote control 1300, as shown in FIG. 3, may be utilized as a separatestand alone remote control or its features may be incorporated into aglobal remote control. The illustrated control 1300 is a stand alonecontrol for controlling the record and broadcast features. It includesan infrared transmission port 1302 and a plurality of buttons to controlthe various features. For example a zoom function 1312 may beimplemented as a four-way rocker switch. A zoom is implemented for thetop quadrant of a display by pressing the upper edge of the button. Ifthe button is pressed in the middle, the center quadrant is chosen forzoom. Likewise any of the remaining three edges of the zoom button canbe operated to select a desired quadrant for zoom features.

A button 1306 is provided to implement the replay function, a button1308 may implement the pause feature, and an enter button 1310 may beprovided to allow entry of various information including a particulartelevision program station. An on/off button 1314 may also be provided.Fast forward may be implemented by button 1316, an electronic programguide may be called by pressing button 1304. The catch up feature may becalled by the button 1318, and a 10 second reply may be implemented bythe button 1320. A conventional numeric keyboard 1322 may be provided toinput additional information including selected television channels.

Techniques for storing the video stream onto the storage device 1410 andfor reading the information out of the storage device are summarized inTable 1 below and illustrated in FIGS. 14, 15, and 16. In FIG. 14, aschematic depiction of the storage system 1400 includes a digitalstorage device such as a hard disk drive 1410. The digitized video 1402is initially stored in a buffer which is designated as being currentlyon the top of the memory stack. The transfer of information between thebuffers and the storage device 1410 may be done in discrete time TABLE 1Time Steps Buffers 1 2 3 4 5 6 7 8 9 Input 1404 1408 1406 1404 1408 14061404 1408 1406 Storage Read X X X 1412 X 1414 X 1412 X 1414 1416 1416Write X X 1404 X 1404 X 1406 X 1404 1408 1406 1408 1408 Output X X X X1414 1412 1416 1414 1412(X = no action)periods referred to herein as time steps. In a first time step, shown inFIG. 15, the digitized video 1402 (FIG. 14) is stored in memory buffer1404 because that buffer is currently at the top of the memory stack, asindicated in block 1502 in FIG. 15.

As the buffer 1404 fills up, the buffer 1408 moves to the top of thestack (as indicated by the dashed arrow) and incoming video is stored inbuffer 1408. As indicated in block 1504 in FIG. 15 in time step 2, thebuffer 1408 replaces the buffer 1404 as the designated top of the stackbuffer. The next input video is then stored in the new buffer (1408) asindicated in block 1506.

In time step 3 the buffer 1408 has filled up and the contents of buffers1404 and 1408 are written to the storage device 1410 in a single writeoperation. During the same time step, buffer 1406 moves to the top ofthe stack and becomes the storage buffer for incoming video. This isillustrated in blocks 1508, 1510 and 1512 in FIG. 15.

In time step 4, the buffer 1404 moves back to the top of the stack tostore incoming video since its previous content has already been savedin the storage device 1410. This is indicated in block 1514 of FIG. 15,and in FIG. 16 in block 1602. The storing of incoming information, asillustrated in FIG. 15 then cycles back to the top of the flow in FIG.15 and continues in the same fashion thereafter.

The content from the storage device 1412 is then read into buffers 1412and 1414.

In time step 5, the buffer 1408 moves to the top of the stack to storeincoming video, and buffer 1414 moves to the top of the output stack andtransfers data to the video output 1418. The contents of the buffers1404 and 1406 are then written to the storage device 1410.

The time steps 1 to 5 illustrate a complete cycle from input to output.The remaining sequence of steps repeat starting at step 5 for the inputof data and time steps 6 through 9 repeat for the output of data.

Referring now solely to FIGS. 14 and 16, in time step 6, informationstored in the storage device is read to the sixth and fourth buffers(i.e., buffers 1414 and 1416) as indicated in block 1606. The contentsof the fifth buffer (1412) are sent to the output 1418.

In time step 7, the contents of the sixth buffer (which is buffer 1416)are sent to the output 1418. No other output operations occur.

In time step 8, the contents from the storage device 1410 are read intothe fifth and sixth buffers (buffers 1412 and 1416) as indicated inblock 1612. Also the contents of the fourth buffer (buffer 1414) arepassed to the output 1418 as indicated in block 1614.

Finally, during time step 9 the contents of the fourth buffer (buffer1412) are passed to the output 1418, completing the cycle.

Using these algorithms, the storage device is provided with enough time,through the operation of the buffers, to write the incoming video whilesupplying enough data simultaneously to the output display. Since thememory is used to make sure no content is dropped at the input end andthe display is never starved at the output end, continuous, even displaycan be provided without losing information. In addition reading andwriting larger chunks of data at one time minimizes the amount ofstorage device head movement, thereby allowing the storage device tokeep up with the read and write requests.

The minimum size of the individual buffers 1404 to 1408 and 1412 to 1416(“B”) is dependent on a number of factors including the input/outputdata rate “D”, for example in megabytes per second, the effectivebandwidth of the storage device when reading or writing “S”, for examplein megabytes per second, and the average seek time for the storagedevice per transaction “t”, in microseconds. The time that it takes tofill up one memory buffer (B divided by D) is advantageously greaterthan the time it takes to read or write two memory buffers (2B dividedby S) plus the average seek time (t):$\left( \frac{B}{D} \right) \geq {\left( \frac{2B}{S} \right) + \left( \frac{t}{1000} \right)}$

Solving for the minimum buffer size in the above equation yields thefollowing equation which gives the minimum buffer size:B≧((DS)/(S−2D))/(t/1000)

A viewer can pause a season premier of a television while the station isstill broadcasting in order to get up and answer the telephone. The usercan resume watching the show after interruption as if the program wereon video tape. In addition, while watching a sports event the user canrewind back to a controversial pass, replay the play in slow motion,stop at the exact instance when the catch was made and zoom in on thereceiver. Also, the user can apply an image sharpening filter to see ifboth of the receiver's feet touched the ground before the receiver wentout of bounds.

Timeshifting by simultaneously recording and playing back a data streamenables the following type of benefits/features for an end-user. Whilewatching the season premiere of a television show, the viewer canliterally “pause” the program in order to get up and answer the phone orget a snack from the refrigerator. After the interruption, the viewercan resume watching again without having missed anything. If the viewercame home 15 minutes late for the show but had started recording theprogram from the beginning, the viewer can begin watching right awayinstead of waiting for the show to be over and then rewinding thecassette tape. Also the viewer can replay scenes during a “live”broadcast (e.g. season premiere of a show or sporting event) in case theviewer missed a line or an exciting play. In addition, while watching asports event the user can rewind back to a controversial play, replaythe play in slow motion, and stop at the exact instance when the catchwas made. To get a better view, the viewer can zoom in on a portion ofthe screen and apply image sharpening filters to magnify one part of thescreen.

Thus, a method of simultaneously recording and playing back atime-shifted video stream is disclosed. The specific arrangements andmethods described herein are merely illustrative of the principles ofthis invention. For example, the same method may be used to store andretrieve other types of data streams besides video streams. Numerousmodifications in form and detail may be made without departing from thescope of the described invention. Although this invention has been shownin relation to a particular embodiment, it should not be considered solimited. Rather, the described invention is limited only by the scope ofthe appended claims.

1-25. (canceled)
 26. A method comprising: selectively displaying a videostream from storage or without storing said video stream, depending on atime delay.
 27. The method of claim 26 including: when the time delay isgreater than a threshold, displaying a video stream from the storage;and when the time delay is less than the threshold, displaying the videostream without storing said stream.
 28. The method of claim 26 includingallowing portions of the video stream to be alternately written to andread from the storage device and storing in a temporary buffer the nextportion to be written to the storage device while another portion isbeing read from the storage device.
 29. The method of claim 26 furtherincluding allowing one or more portions of the video stream to be readfrom the storage device to retrieve the video stream with one or moretime delays that are user-specified.
 30. The method of claim 26 whereinstoring the video stream further comprises allowing the video stream tobe compressed prior to writing the video stream to the storage device.31. The method of claim 28 wherein displaying the video stream from thestorage device when the time delay is greater than the predeterminedthreshold comprises decompressing the video stream after retrieving thevideo stream from the storage device.
 32. An article comprising a mediumstoring instructions that, if executed, enable a computer to:selectively display a video stream from storage or without storing saidvideo stream, depending on a time delay.
 33. The article of claim 32further storing instructions that, if executed, enable the computer to:when the time delay is greater than a threshold, display the videostream from the storage; and when the time delay is less than thethreshold, display the video stream without storing said stream.
 34. Thearticle of claim 33 further storing instructions that, if executed,enable the computer to allow portions of the video stream to bealternately written to and read from the storage device and storing in atemporary buffer the next portion to be written to the storage devicewhile another portion is being read from the storage device.
 35. Thearticle of claim 33 further storing instructions that, if executed,enable the computer to allow one or more portions of the video stream tobe read from the storage device to retrieve the video stream with one ormore time delays that are user-specified.
 36. The article of claim 33further storing instructions that, if executed, enable the computer tocompress the video stream prior to writing the video stream to thestorage device.
 37. The article of claim 34 further storing instructionsthat, if executed, enable the computer to allow portions of the videostream to be displayed from the storage device when the time delay isgreater than the predetermined threshold comprises decompressing thevideo stream after retrieving the video stream from the storage device.38. A system comprising: a storage to store a video stream; a controllerto selectively display a video stream from said storage or withoutstoring said video stream, depending on a time delay.
 39. The system ofclaim 38 said controller to display the video stream from the storagewhen the time delay is greater than a threshold, and when the time delayis less than a threshold, said controller to display the video streamwithout storing said stream
 40. The system of claim 38 including adisplay.
 41. The system of claim 38, said controller including atemporary buffer and wherein said storage stores instructions thatenable the controller to allow portions of the video stream to bealternately written to and read from the storage and store in itstemporary buffer the next portion to be written to the storage whileanother portion is being read from the storage.
 42. The system of claim40 including said controller to allow one or more portions of the videostream to be read from the storage to retrieve the video stream with oneor more time delays that are user specified.
 43. The system of claim 41wherein said controller to allow the video stream to be compressed priorto writing the video stream to the storage.
 44. The system of claim 41wherein said storage decompresses the video stream after retrieving thevideo stream from the storage when the time delay is greater than thepredetermined threshold.